package com.egao.common.module.push.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.egao.common.component.elasticsearch.entity.vo.ElasticPushMsgFormVO;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.constants.CheckRecordConstants;
import com.egao.common.module.push.entity.AbilityFormDTO;
import com.egao.common.module.push.entity.PositionMatching;
import com.egao.common.module.push.entity.PushMsg;

import java.io.IOException;
import java.util.Date;
import java.util.List;

/**
 * 消息推送表(PushMsg)表服务接口
 *
 * @author dl
 * @since 2021-03-03 16:31:20
 */
public interface PushMsgService extends IService<PushMsg> {
    
    /** 
     * 查询发布职位匹配度
     * @return 
     */
    List<PositionMatching> queryPositionMatchingByIds(AbilityFormDTO abilityFormDTO, Integer userId);
    /**
     * 查询发布职位匹配度
     * @param ids 职位集合
     * @param old 需要推送内容
     * @param userId 用户编号
     * @param businessId 业务编号
     * @return
     */
    void savePushMsg(String ids, PushMsg old, Integer userId, Integer businessId, AbilityFormDTO abilityFormDTO);
    /**
     * 查询发布职位匹配度
     * @param id 业务编号
     * @param title 标题
     * @param type 业务类型
     * @return
     */
    void push(Integer id, String title, String type, Date holdTime);

    /**
     * 定时推送
     */
    void pushMsg();

    /**
     * 定时每日17点推送学生意向职位匹配的明日举办的校内、空中宣讲会。
     *
     */
    void pushTomorrowPreach();
    
    /** 
     * 获取推荐数量
     * @param businessId 业务编号
     * @param type 类型
     * @return 
     */
    Integer getPushCount(Integer businessId, String type);
    /**
     * 阅读总数
     * @param businessId 业务编号
     * @param type 类型
     * @return
     */
    Integer getPushReadCount(Integer businessId, String type);
    /**
     * 发送简历总数
     * @param businessId 业务编号
     * @param type 类型
     * @return
     */
    Integer getPushResumeCount(Integer businessId, String type);

    /**
     * 推荐信息
     * @param pageParam 推送
     * @return JsonResult 结果对象
     *
     */
    JsonResult countMessage(PageParam<ElasticPushMsgFormVO> pageParam) throws IOException;

    /**
     * 保存能力推荐
     * @param ids 职位集合
     * @param old 需要推送内容
     * @param businessId 业务编号
     * @return
     */
    void saveAbilityPushMsg(PushMsg old, String ids, Integer businessId);


    JsonResult statisticsStudentPushByCollege(PageParam<ElasticPushMsgFormVO> pageParam);

    /**
     * 查询所有推送统计
     * @param year 年份
     * @return
     */
    JsonResult getAllPushCount(Integer year);

    /**
     * 查询所有学院推送统计
     * @param year 年份
     * @return
     */
    JsonResult getCollegeAllPushCount(Integer year);

    /**
     * 查询进两年所有的推送信息
     * @return
     */
    List<PushMsg> getAllPushMsg();


}